﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Fiuba.Algo3.Titiritero.Vista;
using System.Drawing;
using Fiuba.Algo3.Titiritero;
using AlgoHero.Modelo;

namespace AlgoHero.Vista
{
    public class VistaBoton : Circulo, IPosicionable, IObjetoVivo
    {

        private int x;
        private int y;
        private int incrementoY;
        private Color colorApretado;
        private Tecla teclaAsociada;
        private Font font;
        private int radio;
        // EL RADIO DEL BOTON NO DEBE SUPERAR AL ESPACIO PROVISTO POR EL "CARRIL DE BOTONES" DEL INSTRUMENTO
        public VistaBoton(int radio, int x, int y, int incrementoY, Color color, Tecla tecla)
            : base(radio, color)
        {
            this.x = x;
            this.y = y;
            this.incrementoY = incrementoY;
            this.colorApretado = Color.Aqua;
            this.teclaAsociada = tecla;
            this.Posicionable = this;
            this.font = new Font("Arial", 15);
            this.radio = radio;
        }
        public int X
        {
            get { return x; }
            set { x = value; }
        }

        public int Y
        {
            get { return y; }
            set { y = value; }
        }

        public void Vivir()
        {
            this.y += this.incrementoY;
            if (this.teclaAsociada.FueApretada)
            {
                this.Color = this.colorApretado;
            }
        }

        public override void Dibujar(ISuperficieDeDibujo superficieDeDibujo)
        {
            base.Dibujar(superficieDeDibujo);
            Graphics grafico = (Graphics)superficieDeDibujo.Buffer;
            using (SolidBrush brocha = new SolidBrush(Color.White))
            {
                grafico.DrawString(this.teclaAsociada.Valor.ToString(), this.font, brocha, this.Posicionable.X + this.radio / 3, this.Posicionable.Y + this.radio / 3);
            }
        }
    }
}
